{
 "cells": [
  {
   "cell_type": "code",
   "id": "6de2e0bb",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-10T04:37:21.832993Z",
     "start_time": "2024-04-10T04:37:21.828221Z"
    }
   },
   "source": [
    "import os\n",
    "import nest_asyncio\n",
    "from dbgpt.agent import (\n",
    "    AgentContext,\n",
    "    AgentResource,\n",
    "    GptsMemory,\n",
    "    LLMConfig,\n",
    "    ResourceLoader,\n",
    "    ResourceType,\n",
    "    UserProxyAgent,\n",
    ")\n",
    "from dbgpt.agent.expand.plugin_assistant_agent import PluginAssistantAgent\n",
    "from dbgpt.agent.expand.summary_assistant_agent import SummaryAssistantAgent\n",
    "from dbgpt.agent.plan import WrappedAWELLayoutManager\n",
    "from dbgpt.agent.resource import PluginFileLoadClient\n",
    "from dbgpt.configs.model_config import ROOT_PATH\n",
    "from dbgpt.model.proxy import OpenAILLMClient\n",
    "\n",
    "nest_asyncio.apply()\n",
    "test_plugin_dir = os.path.join(ROOT_PATH, \"examples/test_files/plugins\")"
   ],
   "outputs": [],
   "execution_count": 11
  },
  {
   "cell_type": "code",
   "id": "437b9c40",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-10T04:37:27.592117Z",
     "start_time": "2024-04-10T04:37:23.569538Z"
    }
   },
   "source": [
    "# os.environ['OPENAI_API_KEY']=\"sk-x\"\n",
    "# os.environ['OPENAI_API_BASE']=\"https://proxy_url/v1\"\n",
    "# os.environ['SEARCH_ENGINE']=\"baidu\"\n",
    "# os.environ['BAIDU_COOKIE']=\"\"\"your baidu cookie\"\"\"\n",
    "\n",
    "llm_client = OpenAILLMClient(model_alias=\"gpt-3.5-turbo\")\n",
    "context: AgentContext = AgentContext(conv_id=\"test456\", gpts_app_name=\"信息析助手\")\n",
    "\n",
    "default_memory = GptsMemory()\n",
    "\n",
    "resource_loader = ResourceLoader()\n",
    "plugin_file_loader = PluginFileLoadClient()\n",
    "resource_loader.register_resource_api(plugin_file_loader)\n",
    "\n",
    "plugin_resource = AgentResource(\n",
    "    type=ResourceType.Plugin,\n",
    "    name=\"test\",\n",
    "    value=test_plugin_dir,\n",
    ")\n",
    "\n",
    "tool_engineer = (\n",
    "    await PluginAssistantAgent()\n",
    "    .bind(context)\n",
    "    .bind(LLMConfig(llm_client=llm_client))\n",
    "    .bind(default_memory)\n",
    "    .bind([plugin_resource])\n",
    "    .bind(resource_loader)\n",
    "    .build()\n",
    ")\n",
    "summarizer = (\n",
    "    await SummaryAssistantAgent()\n",
    "    .bind(context)\n",
    "    .bind(default_memory)\n",
    "    .bind(LLMConfig(llm_client=llm_client))\n",
    "    .build()\n",
    ")\n",
    "\n",
    "manager = (\n",
    "    await WrappedAWELLayoutManager()\n",
    "    .bind(context)\n",
    "    .bind(default_memory)\n",
    "    .bind(LLMConfig(llm_client=llm_client))\n",
    "    .build()\n",
    ")\n",
    "manager.hire([tool_engineer, summarizer])\n",
    "\n",
    "user_proxy = await UserProxyAgent().bind(context).bind(default_memory).build()\n",
    "\n",
    "await user_proxy.initiate_chat(\n",
    "    recipient=manager,\n",
    "    reviewer=user_proxy,\n",
    "    message=\"查询成都今天天气\",\n",
    "    # message=\"查询今天的最新热点财经新闻\",\n",
    ")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "--------------------------------------------------------------------------------\n",
      "\u001B[33mWrappedAWELLayoutManager\u001B[0m (to LuBan)-[]:\n",
      "\n",
      "\"查询成都今天天气\"\n",
      "\n",
      "--------------------------------------------------------------------------------\n",
      "un_stream ai response: {\n",
      "  \"tool_name\": \"baidu_search\",\n",
      "  \"args\": {\n",
      "    \"query\": \"成都今天天气\"\n",
      "  },\n",
      "  \"thought\": \"I have selected the 'baidu_search' tool with the query parameter set to '成都今天天气' to search for the weather in Chengdu today.\"\n",
      "}\n",
      "{'query': '成都今天天气'}\n",
      "\n",
      "--------------------------------------------------------------------------------\n",
      "\u001B[33mLuBan\u001B[0m (to Aristotle)-[gpt-3.5-turbo]:\n",
      "\n",
      "\"{\\n  \\\"tool_name\\\": \\\"baidu_search\\\",\\n  \\\"args\\\": {\\n    \\\"query\\\": \\\"成都今天天气\\\"\\n  },\\n  \\\"thought\\\": \\\"I have selected the 'baidu_search' tool with the query parameter set to '成都今天天气' to search for the weather in Chengdu today.\\\"\\n}\"\n",
      "\u001B[32m>>>>>>>>LuBan Review info: \n",
      "Pass(None)\u001B[0m\n",
      "\u001B[34m>>>>>>>>LuBan Action report: \n",
      "execution succeeded,\n",
      "### [...天气预报一周_成都天气预报7天、15天、40天天查询_中国...](http://www.baidu.com/link?url=nSNTTnrxEUFL7oMRAYqg98BfeXkWtwHUaYN7WrTjaxBpSy0blKc4jIZ9m34mP97fFARfXJStjbRoBN6U0s0BDq) \n",
      " \n",
      "### [成都天气_成都天气预报一周_成都天气预报15天](http://www.baidu.com/link?url=Fmp4cnf8Cqqd8N06PpAe3Mn6Esp5q39Scfsnfr7ALxqB5XfoWu9-wY5UjS4n-95Y) \n",
      " \n",
      "### [【成都天气】成都天气预报,蓝天,蓝天预报,雾霾,雾霾消散,...](http://www.baidu.com/link?url=BQF3cexr1Z6hqkdOjRO2pq8YnOuruBV8nBFY0LE7FJJl8_TCcO806skK-aWkmC8UAZ23K-v3SvoXO58Ayze7Da) \n",
      " \n",
      "### [...天气预报一周_成都天气预报7天、15天、40天天查询_中国...](http://www.baidu.com/link?url=rt26_NNSBBWHLr0rAX2RPUbBhVjfr4m3Cd21RG7MOe4gsirRquQyp5fMLbSfeU1iC2b1ZhNVjUzlex39iYN_wq) \n",
      " \n",
      "### [【成都天气预报15天_成都天气预报15天查询】-中国天气网](http://www.baidu.com/link?url=vnZ3GlUxqllZ7Lenc94cImrur2AixgD6dkSOxfNc63PTewisg-RXg3sKzLpBEuPgCWXLr9VnR9gsSZetfPA_94HdTG0It_uAvZpLdUiGmY_) \n",
      " \n",
      "\u001B[0m\n",
      "\n",
      "--------------------------------------------------------------------------------\n",
      "un_stream ai response: Did not find the information you want.\n",
      "\n",
      "--------------------------------------------------------------------------------\n",
      "\u001B[33mWrappedAWELLayoutManager\u001B[0m (to User)-[]:\n",
      "\n",
      "\"查询成都今天天气\"\n",
      "\u001B[32m>>>>>>>>WrappedAWELLayoutManager Review info: \n",
      "Pass(None)\u001B[0m\n",
      "\u001B[34m>>>>>>>>WrappedAWELLayoutManager Action report: \n",
      "execution succeeded,\n",
      "Did not find the information you want.\u001B[0m\n",
      "\n",
      "--------------------------------------------------------------------------------\n"
     ]
    }
   ],
   "execution_count": 12
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7ded4107",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
